package solitaire.InterfacesControle;

import solitaire.InterfacesPresentation.IPSabot;
import solitaire.application.Carte;
import solitaire.application.Sabot;

public interface ICSabot extends ICDoubleTas{
	IPSabot getPresentation();
	Sabot getAbstraction();

	/**
	 * indique s'il est possible d'empiler une carte sur le sabot
	 * @param carte
	 * @return boolean,
	 */
	boolean isEmpilable(ICCarte carte);

	/**
	 * indique s'il est possible de retourner toutes les cartes du tas de cartes visibles sur le tas de cartes cach�es 
	 * @return boolean,
	 */
	boolean isRetournable();

	/**
	 * retourne toutes les cartes du tas de cartes visibles sur le tas de cartes cach�es
	 */
	void retournerCartes();

	/**
	 * retourne le tas de cartes visibles
	 * @return ICTas
	 */
	ICTas getVisible();

	/**
	 * retourne le tas de cartes cachees
	 * @return ICTas
	 */
	ICTas getCache();

	/**
	 * empile une carte sur le tas de cartes visibles et rend cette carte visible
	 * @param carte ICCarte
	 */
	void empiler(Carte carte);
	
	/**
	 * donne la carte a la base du double tas 
	 * @return
	 */
	ICCarte getICCarteBase();
	
	/**
	 *  donne la carte en position n du double tas
	 * @param n
	 * @return
	 */
	ICCarte getICCarte(int n);
	
	/**
	 * donne la carte au sommet du double tas 
	 * @return
	 */
	ICCarte getICCarteSommet();
	
	/**
	 * retourne la carte au sommet du tas de cartes cach�es et la place sur le tas de cartes visibles
	 */
	void retournerCarte();
	
	void clicSabot();

}
